unit UnitTRXCom;   {Define nome da UNIT}
{ ************************************** }
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls, Buttons,xpcom32, StdCtrls, ComCtrls;
{ ************************************** }
type
  TTrxComOBJ = object            { Cria Objeto TRXCOM }
  nCanal:integer;                { Porta de Comunicacao }
  sVersaoXPComlib:String;        { Versao da XPComlib }
  procedure Create;              { Inicializa OBjeto }
  procedure ChkVersao;           { Coloca na propriedade Varsao da XPComlib }
  function OpenComPort:integer;  { Abre a porta de Comunicacao }
  function CloseComPort:integer; { Fecha a porta de Comunicacao }
end;
{ ************************************** }
implementation
  procedure TTrxComOBJ.Create;              { Inicializa OBjeto }
  begin
            ChkVersao; {Versao da XPCOMLIB}
            nCanal:=0; {Inicializa canal para COM1 }
  end;
  { ******************************************* }
  procedure TTrxComOBJ.ChkVersao;           { Abre a porta de Comunicacao }
  var
    szVersion:  array[0..99] of char;
  begin
    XPComVersion(szVersion); {Versao da XPCOMLIB}
    sVersaoXPComlib:=szVersion;
  end;
  { ************************************* }
  function TTrxComOBJ.OpenComPort:integer;  { Abre a porta de Comunicacao }
  begin
  { *********** ABRIR CANAL ************* }
   Result := ComOpen(nCanal,9600,8,1,COM_NONEP,COM_NOFLOW,COM_NOFLOW,256,256);
  end;
  { *************************************************** }
  function TTrxComOBJ.CloseComPort:integer; { Fecha a porta de Comunicacao }
  begin
  { *********** FECHA CANAL ************* }
   Result := ComClose(nCanal);
  end;
  { *************************************************** }

end.
